//    package com.xiaoer.xedj.persistence.specification;
//
//import org.springframework.data.jpa.domain.Specification;
//import org.springframework.util.StringUtils;
//
//import javax.persistence.criteria.*;
//import java.util.ArrayList;
//import java.util.List;
//
//    /**
//     * 首页全部查询条件封装。
//     *
//     * @author ping.chen
//     * @author 1.0
//     */
//    public class GoodsSpecs {
//
//        /**
//         * 根据商品id、类型获取分页信息
//         *
//         * @param
//         * @return
//         */
//        public static Specification<Goods> HallSpecs(List<String> goodsIds,String type,String storeId) {
//            return new Specification<Goods>() {
//                @Override
//                public Predicate toPredicate(Root<Goods> r, CriteriaQuery<?> q, CriteriaBuilder cb) {
//                    List<Predicate> predicateList = new ArrayList<>();//存放多个条件
//                    List<Order> orderList = new ArrayList<>();//排序条件
//
//
//
//                    // 商店Id集合
//                    if (goodsIds.size() != 0) {
//                        CriteriaBuilder.In<String> in = cb.in(r.get("id"));
//                        for (String goodsId : goodsIds) {
//                            in.value(goodsId);
//                        }
//                        predicateList.add(in);
//                    }
//                    Store store = new Store();
//                    store.setId(storeId);
//                    predicateList.add(cb.equal(r.get("store"), store));
//                    if(!StringUtils.isEmpty(type)&&type.equals("sellCount")){
//                        //销量
//                        orderList.add(cb.desc(r.get("sellCount")));
//                    }else if(!StringUtils.isEmpty(type)&&type.equals(GoodsSearchConditionEnum.DISCOUNT.name())){
//                        //折扣
//                        predicateList.add(cb.equal(r.get("goodsGenre"),GoodsSearchConditionEnum.DISCOUNT));
//                    }else if(!StringUtils.isEmpty(type)&&type.equals(GoodsSearchConditionEnum.UPNEW.name())){
//                        //上新
//                        predicateList.add(cb.equal(r.get("goodsGenre"),GoodsSearchConditionEnum.UPNEW));
//                        orderList.add(cb.desc(r.get("createDateTime")));
//                    }else if(StringUtils.isEmpty(type)){
//                        orderList.add(cb.desc(r.get("sellCount")));
//                    }
//
//
//                    return q.where(predicateList.toArray(new Predicate[predicateList.size()])).orderBy(orderList).getRestriction();
//                }
//            };
//        }
//
//    }
